package com.iflytek.ci.qams.service;

import com.iflytek.ci.qams.domain.Comment;
import com.iflytek.ci.qams.dto.CommentAction;
import com.iflytek.framework.pagination.PaginationCriteria;
import com.iflytek.framework.pagination.PaginationResult;

/**
 * <p>
 * 回复操作 服务接口.
 * </p>
 *
 * @author mdzhang
 * @since JDK 1.5
 */
public interface CommentService {

    /**
     * 添加一个回复
     *
     * @param comment  回复信息
     * @param issue_id     问题id
     * @return   新添加回复的id
     */
	int add_comment(Comment comment, long issue_id);

	/**
	 * 批量添加回复，主要用于批量关闭时统一回复
	 *
	 * @param comment 回复信息
	 * @param ids            多个问题id
	 * @return   添加回复的数量
	 */
	public int add_comments(Comment comment, String[] ids);

    /**
     * 根据问题id得到相关的所有回复信息分页
     *
     * @param criteria   分页信息
     * @param issue_id   问题id
     * @return   回复信息的分页
     */
	PaginationResult<Comment> get_commentByIssue_id(
			PaginationCriteria criteria, long issue_id);

    /**
     * 删除某个用户的所有回复信息
     *
     * @param u_id
     * @param comment_id
     */
	void remove_comment(long u_id, long comment_id);

	/**
	 * 根据 回复id获取回复信息
	 *
	 * @param id 回复ID
	 * @return 回复信息
	 */
	Comment comment_with_id(long id);

	/**
	 * 分页获取issue的回复信息和action记录
	 *
	 * @param issue_id 反馈信息的id
	 * @param criteria  分页信息
	 * @return    回复信息和action记录的分页
	 */
	PaginationResult<CommentAction> page_commentaction_by_issuekey(
			long issue_id, PaginationCriteria criteria);
}
